
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<HTML>

<HEAD>
   <TITLE>cvpool_c</TITLE>
</HEAD>

<BODY style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<A name="TOP"></A>

<table style="text-align: left; margin-left: auto; margin-right: auto; width: 800px;"
 border="0" cellpadding="5" cellspacing="2">
  <tbody>
    <tr>
      <td style="background-color: rgb(153, 153, 153); vertical-align: middle; text-align: center;">
      <div align="right"> 
      <small><small><a href="index.html">Index Page</a></small></small>
      </div>
      <b>cvpool_c</b> </td>
    </tr>

    <tr>
      <td style="vertical-align: top;">

<small><div align="center">
<A HREF="index.html#A">A</A>&nbsp;
<A HREF="index.html#B">B</A>&nbsp;
<A HREF="index.html#C">C</A>&nbsp;
<A HREF="index.html#D">D</A>&nbsp;
<A HREF="index.html#E">E</A>&nbsp;
<A HREF="index.html#F">F</A>&nbsp;
<A HREF="index.html#G">G</A>&nbsp;
<A HREF="index.html#H">H</A>&nbsp;
<A HREF="index.html#I">I</A>&nbsp;
<A HREF="index.html#J">J</A>&nbsp;
<A HREF="index.html#K">K</A>&nbsp;
<A HREF="index.html#L">L</A>&nbsp;
<A HREF="index.html#M">M</A>&nbsp;
<A HREF="index.html#N">N</A>&nbsp;
<A HREF="index.html#O">O</A>&nbsp;
<A HREF="index.html#P">P</A>&nbsp;
<A HREF="index.html#Q">Q</A>&nbsp;
<A HREF="index.html#R">R</A>&nbsp;
<A HREF="index.html#S">S</A>&nbsp;
<A HREF="index.html#T">T</A>&nbsp;
<A HREF="index.html#U">U</A>&nbsp;
<A HREF="index.html#V">V</A>&nbsp;
<A HREF="index.html#W">W</A>&nbsp;
<A HREF="index.html#X">X</A>&nbsp;
</div></small>
       <br>
       <table style="text-align: left; width: 60%; margin-left: auto; margin-right: auto;"
       border="0" cellspacing="2" cellpadding="2">
        <tbody>
          <tr>
            <td style="width: 50%; text-align: center;">
            <small>
              <a href="#Procedure">Procedure<br></a>
              <a href="#Abstract">Abstract<br></a>
              <a href="#Required_Reading">Required_Reading<br></a>
              <a href="#Keywords">Keywords<br></a>
              <a href="#Brief_I/O">Brief_I/O<br></a>
              <a href="#Detailed_Input">Detailed_Input<br></a>

              </small>
              </td>
              <td style="vertical-align: top; width: 50%; text-align: center;">
              <small>               <a href="#Detailed_Output">Detailed_Output<br></a>
              <a href="#Parameters">Parameters<br></a>
              <a href="#Exceptions">Exceptions<br></a>
              <a href="#Files">Files<br></a>
              <a href="#Particulars">Particulars<br></a>
              <a href="#Examples">Examples<br></a>

              </small>
              </td>
              <td style="vertical-align: top; width: 50%; text-align: center;">
              <small>               <a href="#Restrictions">Restrictions<br></a>
              <a href="#Literature_References">Literature_References<br></a>
              <a href="#Author_and_Institution">Author_and_Institution<br></a>
              <a href="#Version">Version<br></a>
              <a href="#Index_Entries">Index_Entries<br></a>
             </small>
            </td>
          </tr>
        </tbody>
</table>

<h4><a name="Procedure">Procedure</a></h4>
<PRE>
   void cvpool_c ( ConstSpiceChar  * agent,
                   SpiceBoolean    * update ) 

</PRE>
<h4><a name="Abstract">Abstract</a></h4>
<PRE>
 
   Determine whether or not any of the variables that are to be watched
   and have a specified agent on their distribution list have been 
   updated.
 </PRE>
<h4><a name="Required_Reading">Required_Reading</a></h4>
<PRE>
 
   <a href="../req/kernel.html">KERNEL</a> 
 </PRE>
<h4><a name="Keywords">Keywords</a></h4>
<PRE>
 
   SYMBOLS 
   UTILITY 
 

</PRE>
<h4><a name="Brief_I/O">Brief_I/O</a></h4>
<PRE>
 
   Variable  I/O  Description 
   --------  ---  -------------------------------------------------- 
   agent      I   Name of the agent to check for notices. 
   update     O   SPICETRUE if variables for agent have been updated. 
 </PRE>
<h4><a name="Detailed_Input">Detailed_Input</a></h4>
<PRE>
 
   agent     is the name of a function or significant portion of code
             that needs to access variables in the kernel pool.
             Generally this agent will buffer these variables
             internally and fetch them from the kernel pool only when
             they are updated.
 </PRE>
<h4><a name="Detailed_Output">Detailed_Output</a></h4>
<PRE>
 
   update    is a logical flag that will be set to SPICETRUE if the
             variables in the kernel pool that are required by agent
             have been updated since the last call to <b>cvpool_c</b>.
 </PRE>
<h4><a name="Parameters">Parameters</a></h4>
<PRE>
 
   See function <a href="szpool_c.html">szpool_c</a>. 
 </PRE>
<h4><a name="Exceptions">Exceptions</a></h4>
<PRE>
 
   1) If the string pointer for agent is null, the error 
      SPICE(NULLPOINTER) will be signaled.
      
   2) If the input string haslength zero, the error SPICE(EMPTYSTRING) 
      will be signaled.
 </PRE>
<h4><a name="Files">Files</a></h4>
<PRE>
 
   None. 
 </PRE>
<h4><a name="Particulars">Particulars</a></h4>
<PRE>
 
   This entry point allows the calling program to determine whether or
   not variables associated with with agent have been updated.  Making
   use of this entry point in conjunction with the entry point <a href="swpool_c.html">swpool_c</a>
   (set watch on pool variables) modules can buffer kernel pool
   variables they need and fetch values from the kernel pool only when
   variables have been updated.
 
   Note that the call to <b>cvpool_c</b> has a side effect. Two consecutive
   calls to <b>cvpool_c</b> with the same agent will always result in the
   update being SPICEFALSE on the second call.  In other words, if you
   imbed the following two lines of code in a piece of code
 
      <b>cvpool_c</b> ( agent, &amp;update ); 
      <b>cvpool_c</b> ( agent, &amp;update );
 
   and then test update, it will be SPICEFALSE.  The idea is that once
   a call to <b>cvpool_c</b> has been made, the kernel pool has performed its
   duty and notified the calling routine that one of the agent's
   variables has been updated. Consequently, on the second call to
   <b>cvpool_c</b> above, the kernel pool will not have any updates to report
   about any of agent's variables.
 
   If, on the other hand, you have code such as 
 
      <b>cvpool_c</b> ( agent, &amp;update ); 
      <a href="furnsh_c.html">furnsh_c</a> ( &quot;myfile.dat&quot;   ); 
      <b>cvpool_c</b> ( agent, &amp;update ); 
 
   the value of update will be true if one of the variables associated
   with agent was updated by the call to <a href="furnsh_c.html">furnsh_c</a> (and that variable
   has been specified as one to watch by call a call to <a href="swpool_c.html">swpool_c</a>).
 
   It should also be noted that any call to <b>cvpool_c</b> that occurs
   immediately after a call to <a href="swpool_c.html">swpool_c</a> will result in update being
   returned as SPICETRUE  In other words, code such as shown below,
   will always result in the value of UPDATE as being returned
   SPICETRUE:
 
      <a href="swpool_c.html">swpool_c</a> ( agent, nnames, namelen, names   );
      <b>cvpool_c</b> ( agent,                  &amp;update ); 
 
   See the header for <a href="swpool_c.html">swpool_c</a> for a full discussion of this 
   feature. 
 </PRE>
<h4><a name="Examples">Examples</a></h4>
<PRE>
 
   Suppose that you have an application subroutine, MYTASK, that 
   needs to access a large data set in the kernel pool.  If this 
   data could be kept in local storage and kernel pool queries 
   performed only when the data in the kernel pool has been 
   updated, the routine can perform much more efficiently. 
 
   The code fragment below illustrates how you might make use of this 
   feature. 
 
      #include &quot;SpiceUsr.h&quot;
           .
           .
           .
      /.  
      On the first call to this routine establish those variables 
      that we will want to read from the kernel pool only when 
      new values have been assigned. 
      ./
      if ( first )
      {
         first = SPICEFALSE;
         <a href="swpool_c.html">swpool_c</a> ( &quot;MYTASK&quot;, nnames, namelen, names ); 
      }
 
      /.
      If any of the variables has been updated, fetch them from the
      kernel pool.
      ./    
        
      <b>cvpool_c</b> ( &quot;MYTASK&quot;, &amp;update ); 
 
      if ( update )
      {
         for ( i = 0;  i &lt; NVAR;  i++ )
         {
            <a href="gdpool_c.html">gdpool_c</a>( MYTASK_VAR[i], 1, NMAX, n[i], val[i], &amp;found[i] );
         }
      }
 </PRE>
<h4><a name="Restrictions">Restrictions</a></h4>
<PRE>
 
   None. 
 </PRE>
<h4><a name="Literature_References">Literature_References</a></h4>
<PRE>
 
   None. 
 </PRE>
<h4><a name="Author_and_Institution">Author_and_Institution</a></h4>
<PRE>
 
   N.J. Bachman   (JPL)
   W.L. Taber     (JPL) 
 </PRE>
<h4><a name="Version">Version</a></h4>
<PRE>
   -CSPICE Version 1.0.1, 14-AUG-2006   (EDW)

      Replace mention of <a href="ldpool_c.html">ldpool_c</a> with <a href="furnsh_c.html">furnsh_c</a>.

   -CSPICE Version 1.0.0, 05-JUN-1999 (NJB) (WLT)
</PRE>
<h4><a name="Index_Entries">Index_Entries</a></h4>
<PRE>
 
   Check the kernel pool for updated variables 
 </PRE>
<h4>Link to routine cvpool_c source file <a href='../../../src/cspice/cvpool_c.c'>cvpool_c.c</a> </h4>

      </td>
    </tr>
  </tbody>
</table>

   <pre>Wed Jun  9 13:05:20 2010</pre>

</body>
</html>

